﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// Reviewed
#pragma once

#include "GcmpGUiBaseInterface.h"
#include "IEventArgs.h"

namespace gcmp
{

enum class CheckState;

/// \brief CheckBoxGroup事件类型
enum class CheckBoxGroupEventType : int32_t
{
    CheckBoxStateChanged  ///< CheckBoxGroup中的任意一个CheckBox状态修改都会触发
};

/// \brief CheckBoxGroup事件参数
class GCMP_GUI_BASE_INTERFACE_EXPORT ICheckBoxGroupEventArgs : public IEventArgs
{
public:
    /// \brief 得到CheckBoxGroup事件类型
    virtual CheckBoxGroupEventType GetType() const = 0;

    /// \brief 得到被点击的CheckBox的Id及其选中状态
    virtual std::pair<std::wstring, CheckState> GetStateChangedCheckBoxIdAndState() const = 0;

    /// \brief 判断CheckBox状态改变类型
    /// \return 返回true表示CheckBox状态由用户手动修改；返回false表示CheckBox状态由程序自动修改。
    virtual bool IsCheckBoxStateChangeByUser() const = 0;
};

}   // end namespace gcmp
